NHibernate কনফিগারেশন ফাইল hibernate.cfg.xml একটি অত্যন্ত গুরুত্বপূর্ণ অংশ, যা NHibernate এর কার্যকারিতা সঠিকভাবে কনফিগার করে। এই ফাইলটি ডেটাবেসের সাথে সংযোগ স্থাপন এবং ORM কার্যক্রম পরিচালনার জন্য প্রয়োজনীয় সমস্ত সেটিংস ধারণ করে।
এই ফাইলটি ডেটাবেস কানেকশন স্ট্রিং, ড্রাইভার, ডায়ালেক্ট, ক্যাশিং, এবং অন্যান্য NHibernate কনফিগারেশন প্যারামিটার সেট করে। নিচে একটি উদাহরণ দেওয়া হলো, যার মাধ্যমে আপনি একটি hibernate.cfg.xml ফাইল তৈরি করতে পারেন।
1. hibernate.cfg.xml ফাইলের মৌলিক গঠন
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<!-- ডেটাবেস কানেকশন ড্রাইভার -->
<property name="hibernate.connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<!-- ডেটাবেস কানেকশন স্ট্রিং (এটি আপনার ডেটাবেসের সাথে সংযোগ স্থাপন করবে) -->
<property name="hibernate.connection.connection_string">Server=yourserver;Database=yourdb;Integrated Security=True;</property>
<!-- SQL ডায়ালেক্ট (ডেটাবেসে SQL কীভাবে লেখা হবে তা নির্ধারণ করে) -->
<property name="hibernate.dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<!-- SQL কোড কনসোল বা লোগে দেখানোর জন্য, ডেভেলপারদের সহায়তার জন্য -->
<property name="hibernate.show_sql">true</property>
<!-- SQL কোড ফরম্যাট করার জন্য -->
<property name="hibernate.format_sql">true</property>
<!-- ডেটাবেস স্কিমার আপডেট পদ্ধতি নির্ধারণ -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- দ্বিতীয় স্তরের ক্যাশিং সক্রিয় করা -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property>
<!-- ক্যাশিং কনফিগারেশন -->
<property name="hibernate.cache.region.factory_class">NHibernate.Caches.SysCache.SysCacheRegionFactory, NHibernate.Caches.SysCache</property>
<!-- মডেল ম্যাপিং ফাইল (এই অংশে আপনার ORM মডেল ক্লাসের জন্য ম্যাপিং ফাইল যুক্ত করবেন) -->
<mapping assembly="YourAssemblyName"/>
<!-- আরও কিছু অতিরিক্ত কনফিগারেশন (যেমন লেজি লোডিং, ট্রানজেকশন পরিচালনা ইত্যাদি) -->
</session-factory>
</hibernate-configuration>
2. প্রধান কনফিগারেশন প্যারামিটার
hibernate.connection.driver_class
এই প্রপার্টিটি ডেটাবেস ড্রাইভার শ্রেণী নির্ধারণ করে, যা NHibernate কে ডেটাবেসের সাথে যোগাযোগ করতে সহায়তা করে। NHibernate.Driver.SqlClientDriver সাধারণত SQL Server এর জন্য ব্যবহার করা হয়।
hibernate.connection.connection_string
এটি ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য একটি কানেকশন স্ট্রিং। এটি আপনার ডেটাবেস সার্ভার, ডেটাবেস নাম, এবং ব্যবহারকারীর পরিচয় (যেমন Integrated Security বা ইউজারনেম-পাসওয়ার্ড) ধারণ করে।
<property name="hibernate.connection.connection_string">Server=myserver;Database=mydb;Integrated Security=True;</property>
hibernate.dialect
এটি ডায়ালেক্ট সেট করে, যার মাধ্যমে NHibernate SQL কোড লিখতে পারে। আপনি যদি SQL Server ব্যবহার করেন, তবে NHibernate.Dialect.MsSql2008Dialect হবে।
hibernate.show_sql
এই প্রপার্টিটি যদি true হয়, তবে NHibernate সমস্ত SQL কুয়েরি কনসোল/লগে দেখাবে, যা ডেভেলপারদের জন্য কার্যকরী হতে পারে। ডেভেলপাররা এভাবে কোডের মধ্য দিয়ে গৃহীত SQL কুয়েরি দেখতে পারেন।
<property name="hibernate.show_sql">true</property>
hibernate.format_sql
এই প্রপার্টিটি true হলে, SQL কোডটি ফরম্যাট করা হবে এবং এটি আরও পাঠযোগ্য হবে।
hibernate.hbm2ddl.auto
এটি ডেটাবেস স্কিমা ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। এর মানগুলি হলো:
- update: বিদ্যমান স্কিমা আপডেট করবে।
- create: নতুন স্কিমা তৈরি করবে, পূর্ববর্তী ডেটা মুছে যাবে।
- create-drop: অ্যাপ্লিকেশন বন্ধ হলে স্কিমা ড্রপ করে ফেলবে।
- validate: ডেটাবেস স্কিমার সঠিকতা পরীক্ষা করবে, তবে কোনো পরিবর্তন করবে না।
hibernate.cache.use_second_level_cache
এই প্রপার্টিটি true হলে, NHibernate দ্বিতীয় স্তরের ক্যাশিং ব্যবহার করবে। ক্যাশিং সক্ষম করলে পারফরম্যান্সে উন্নতি ঘটবে।
hibernate.cache.provider_class
এই প্রপার্টিটি ক্যাশিং সিস্টেম নির্ধারণ করে। উদাহরণস্বরূপ, NHibernate.Caches.SysCache.SysCacheProvider সিস্টেমে ক্যাশিং ব্যবস্থাপনা পরিচালনা করবে।
mapping assembly="YourAssemblyName"
এটি আপনার assembly বা namespace নির্দেশ করে, যেখানে আপনার Entity বা মডেল ক্লাসগুলো রয়েছে। NHibernate এই ক্লাসগুলোকে মডেল হিসেবে ব্যবহার করবে।
3. hibernate.cfg.xml ফাইলের অবস্থান
hibernate.cfg.xml ফাইলটি সাধারণত প্রোজেক্টের bin বা App_Data ফোল্ডারে রাখা হয়। যদি আপনি ASP.NET Core বা অন্য কোনও .NET ফ্রেমওয়ার্কে কাজ করেন, তবে এটি wwwroot বা প্রোজেক্টের রুট ফোল্ডারে থাকতে পারে।
আপনার প্রোজেক্টের কনফিগারেশন ফাইলটি নিশ্চিতভাবে hibernate.cfg.xml নামে এবং সঠিক ফোল্ডারে থাকা উচিত, যাতে NHibernate সেটি খুঁজে পেতে পারে।
4. ব্যবহারিক উদাহরণ
ধরা যাক, আপনার একটি Employee ক্লাস আছে এবং আপনি এটি ডেটাবেসে সেভ করতে চান। আপনি hibernate.cfg.xml ফাইলটি ঠিকভাবে কনফিগার করার পর, NHibernate এর মাধ্যমে ডেটাবেস অপারেশন শুরু করতে পারবেন। আপনি একটি সেশন তৈরি করে এবং তার মাধ্যমে ডেটাবেস অপারেশন যেমন Save, Update, Delete চালাতে পারবেন।
using (ISession session = NHibernateHelper.SessionFactory.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
try
{
var employee = new Employee { Name = "John", Age = 30 };
session.Save(employee);
transaction.Commit(); // ট্রানজেকশন কমপ্লিট
}
catch (Exception)
{
transaction.Rollback(); // রোলব্যাক
}
}
}
এইভাবে, NHibernate কনফিগারেশন ফাইল তৈরি করে, আপনি সহজে ডেটাবেসের সাথে সংযোগ স্থাপন করতে এবং ORM কার্যক্রম পরিচালনা করতে পারবেন।
Read more